package org.example.link_list;

public class Intersection_of_linked_lists {
    public static void main(String[] args) {
        //链表相交
        //给你两个单链表的头节点 headA 和 headB ，请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点，返回 null 。

        ListNode listNode2 = new ListNode(5);
        listNode2.next = null;
        ListNode listNode3 = new ListNode(4,listNode2);
        ListNode listNode4 = new ListNode(3,listNode3);
        ListNode listNode5 = new ListNode(2,listNode4);
        ListNode headA = new ListNode(1,listNode5);

        ListNode listNode41 = new ListNode(31,listNode3);
        ListNode listNode51 = new ListNode(21,listNode41);
        ListNode headB = new ListNode(11,listNode51);

        int lenA = 0;
        int lenB = 0;
        ListNode result = null;
        ListNode p =null;
        ListNode q =null;
        q = headA;
        while(q!=null){
            q = q.next;
            lenA++;
        }

        p = headB;
        while(p!=null){
            p = p.next;
            lenB++;
        }
        q = headA;
        p = headB;
        if (lenB>lenA){
            int temp = lenA;
            lenA = lenB;
            lenB = temp;
            q = headB;
            p  = headA;
        }
        for (int i = 0;i<lenA-lenB;i++){
            q = q.next;
        }
        while(q !=null){
            if(q==p){
                result = q;
                break;
            }
            q = q.next;
            p = p.next;
        }
        System.out.println(result.val);
    }
}
